With the increasing sophistication and complexity of personal computers, performance issues have become increasingly difficult to analyze. Modern personal computers have multiple processors or CPUs, and commonly employ multi-tasking and multi-threading. Furthermore, users install virtually infinite combinations of applications, and configure their computers in many different ways. These factors combine to make it very difficult to pinpoint causes of slow performance or other performance issues.
Technologies exist for collecting information from individual computers when they encounter performance issues such as lack of responsiveness. Assuming users have given permission, an operating system can monitor system performance at various levels of granularity, detect when issues arise, and report system information relevant to the point in time when the issues occurred. In any individual case, this information may include a system trace showing a timeline of execution events that occurred before, during, and after the performance issue. These events include function-level calls, and the traces indicate sequences of such calls that occur in a time period surrounding any performance issues. Such sequences are referred to as callback sequences or call stacks.
Call stacks can be evaluated by analysts to determine causes of performance and responsiveness issues. However, the scale of this evaluation is daunting. Operating system traces may be collected from thousands or millions of users, and each trace may be very large. Furthermore, the traces come from computers having various different configurations, and it can become very difficult for analysts to isolate common issues.
Note that this can be much more difficult than analyzing the cause of a system or component crash. In the case of a crash, a particular execution point can be identified, and execution can be traced directly backward from that point to determine the cause of the crash. This is not possible when analyzing causes of slow performance, because there is no single point that can be so closely correlated with the symptom.